package com.inifitness.admin.core.system.service;

import java.util.List;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.inifitness.admin.core.system.model.dto.UserAuthInfo;
import com.inifitness.admin.core.system.model.entity.SysUser;
import com.inifitness.admin.core.system.model.form.UserForm;
import com.inifitness.admin.core.system.model.query.UserPageQuery;
import com.inifitness.admin.core.system.model.vo.UserExportVO;
import com.inifitness.admin.core.system.model.vo.UserInfoVO;
import com.inifitness.admin.core.system.model.vo.UserPageVO;

/**
 * 用户业务接口
 *
 * @author sunjinfeng
 * @since 2024/04/18 11:00:00
 */
public interface SysUserService extends IService<SysUser> {

  /**
   * 用户分页列表
   *
   * @return
   */
  IPage<UserPageVO> listPagedUsers(UserPageQuery queryParams);


  /**
   * 获取用户表单数据
   *
   * @param userId
   * @return
   */
  UserForm getUserFormData(Long userId);


  /**
   * 新增用户
   *
   * @param userForm 用户表单对象
   * @return
   */
  boolean saveUser(UserForm userForm);

  /**
   * 修改用户
   *
   * @param userId   用户ID
   * @param userForm 用户表单对象
   * @return
   */
  boolean updateUser(Long userId, UserForm userForm);


  /**
   * 删除用户
   *
   * @param idsStr 用户ID，多个以英文逗号(,)分割
   * @return
   */
  boolean deleteUsers(String idsStr);


  /**
   * 修改用户密码
   *
   * @param userId   用户ID
   * @param password 用户密码
   * @return
   */
  boolean updatePassword(Long userId, String password);

  /**
   * 根据用户名获取认证信息
   *
   * @param username 用户名
   * @return {@link UserAuthInfo}
   */

  UserAuthInfo getUserAuthInfo(String username);


  /**
   * 获取导出用户列表
   *
   * @param queryParams
   * @return
   */
  List<UserExportVO> listExportUsers(UserPageQuery queryParams);


  /**
   * 获取登录用户信息
   *
   * @return
   */
  UserInfoVO getCurrentUserInfo();
}
